package com.ytc.mapper;

import com.ytc.dto.BookFeiLeiDto;
import com.ytc.model.Book;
import com.ytc.model.Booklist;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author 25645
* @description 针对表【my_booklist(全部书籍列表)】的数据库操作Mapper
* @createDate 2023-01-08 11:49:46
* @Entity com.ytc.model.Booklist
*/
public interface BooklistMapper {

    //张泽萌：新增作品
    void addBookList(Booklist booklist);

    //柴晓颖：查询书籍信息去修改
    Booklist queryBookListByBookid(Integer bookid);

    //柴晓颖：删除书籍
    int deleteByPrimaryKey(Long id);

    int insert(Booklist record);

    int insertSelective(Booklist record);

    int updateByPrimaryKeySelective(Booklist record);

    int updateByPrimaryKey(Booklist record);

    //柴晓颖：通过作者查对应的书籍
    List<Booklist> queryBookListByAuthor(@Param("uId") Integer uId);

    //柴晓颖：作者申请签约，修改状态
    void applyQianyue(Integer blId);

    //张泽萌
    Long queryScountByUid(Integer uId);

    /*高媛：通过用户ID查找书架*/
    List<Booklist> queryBookShelfByUserid(@Param("userid") int userid);
    /*高媛：通过用户ID查找历史阅读*/
    List<Booklist> queryBookHistoryByUserid(@Param("userid")int userid);
    /*高媛：通过用户ID、书籍ID、历史章节ID查询相关内容阅读(连历史记录表)*/
    Booklist queryBookByHistory(@Param("bookid")Integer bookid,@Param("cid") Integer cid,@Param("userid") Integer userid);
    /*高媛：根据书籍ID和用户ID删除历史阅读记录*/
    void delBookByHistory(@Param("bookid")Integer bookid,@Param("userid") Integer userid);
    /*高媛：通过用户ID、书籍ID、历史章节ID查询相关内容阅读(连书架表)*/
    Booklist queryBookByShelf(@Param("bookid")Integer bookid,@Param("cid") Integer cid,@Param("userid") Integer userid);
    /*高媛：根据书籍ID和用户ID删除历史阅读记录*/
    void delBookByShelf(@Param("bookid")Integer bookid,@Param("userid") Integer userid);
    /*高媛：根据用户ID批量删除书架书籍*/
    void delsBooksByShelf(@Param("list")List<Integer> list,@Param("userid") Integer userid);
    /*高媛：根据用户ID批量删除历史阅读记录（逻辑删除）*/
    void delsBooksByHistory(@Param("list")List<Integer> list,@Param("userid") Integer userid);
    /*高媛：从历史记录加入书架*/
    void historyAddToShelfById(@Param("userid") Integer userid, @Param("bookid") Integer bookid);
    /*高媛：批量从历史记录加入书架*/
    void HistoryAddsShelfById(@Param("list")List<Integer> list,@Param("userid") Integer userid);
    /*高媛：查询所有类型为女生的书籍信息并根据点击量排序*/
//    List<Booklist> queryBookOrderByGirlEnd();

    //张阔：分类条件查询
    List<Booklist> queryBookListByDto(@Param("dto") BookFeiLeiDto dto);

    //张阔：查询书籍
    Booklist queryBookById(Integer blId);

    //张阔：修改点击量
    void updateBookCount(@Param("bid") Integer bid,@Param("cid") Integer cid);

	/*高媛：查询所有类型为女生的书籍信息并根据点击量排序*/
    List<Booklist> queryBookOrderByGirlEnd();
    /*高媛：查询所有类型男生的书籍信息并根据点击量排序*/
    List<Booklist> queryBookOrderByBoyEnd();
    /*高媛：女生收藏榜*/
    List<Booklist> girlBookCollect();
    /*高媛：男生收藏榜*/
    List<Booklist> boyBookCollect();
    /*高媛：查询所有类型为女生的书籍字数*/
    List<Booklist> countAllNumByGirl();
    /*高媛：查询所有类型为男生的书籍字数*/
    List<Booklist> countAllNumByBoy();
    /*高媛：女生新书热度榜*/
    List<Booklist> girlBookNew();
    /*高媛：男生新书热度榜*/
    List<Booklist> boyBookNew();
    /*高媛：查询7天内类型为女生书籍的更新字数*/
    List<Booklist> countBookUpdateNumByGirl();
    /*高媛：查询7天内类型为女生书籍的更新书籍信息*/
    List<Booklist> girlBookUpdateCount();
    /*高媛：查询7天内类型为男生书籍的更新书籍信息*/
    List<Booklist> boyBookUpdateCount();
    /*高媛：查询7天内类型为男生书籍的更新字数*/
    List<Booklist> countBookUpdateNumByBoy();
}
